package com.stellar.auth.controller.admin.authUser.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.stellar.core.util.DateFormatConstants;
import com.stellar.web.core.bean.PageInfo;
import lombok.Data;

import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.Date;


/**
 * 系统用户信息表(AuthUser)分页查询VO
 *
 * @author Jqchan
 * @since 2025-05-16
 */
@Data
public class AuthUserRequestPageVO extends PageInfo implements Serializable {
    private static final long serialVersionUID = -47947615656736019L;

    /**
     * 用户ID
     */
    private Long id;
    /**
     * 用户类型：wechat-微信用户/anonymous-匿名用户
     */
    private String userType;
    /**
     * 微信用户唯一标识（OpenID）
     */
    private String openid;
    /**
     * 微信昵称
     */
    private String nickName;
    /**
     * 微信头像URL
     */
    private String avatar;
    /**
     * 绑定的学校ID
     */
    private Long schoolId;
    /**
     * 学号
     */
    private String studentId;
    /**
     * 邮箱
     */
    private String email;
    /**
     * 系统默认马甲头像URL
     */
    private String defaultAvatar;
    /**
     * 系统默认昵称
     */
    private String defaultNickName;
    /**
     * 性别 1-男 2-女
     */
    private Integer sex;
    /**
     * 手机号
     */
    private String phone;
    /**
     * 年级
     */
    private String grade;
    /**
     * 用户状态：normal-正常/banned-封禁
     */
    private String userStatus;
    /**
     * 创建时间
     */
    @JsonFormat(pattern = DateFormatConstants.DATETIME_FORMAT_YYYY_MM_DD_HH_MM_SS, timezone = DateFormatConstants.TIME_ZONE_GMT_PLUS_8)
    private Date createdTime;
    /**
     * 创建人
     */
    private String createdBy;
    /**
     * 修改时间
     */
    @JsonFormat(pattern = DateFormatConstants.DATETIME_FORMAT_YYYY_MM_DD_HH_MM_SS, timezone = DateFormatConstants.TIME_ZONE_GMT_PLUS_8)
    private Date updateTime;
    /**
     * 修改人
     */
    private String updateBy;
    /**
     * 是否删除：1-删除/0-未删除
     */
    private Integer isDeleted;
    /**
     * 最后登录时间
     */
    @JsonFormat(pattern = DateFormatConstants.DATETIME_FORMAT_YYYY_MM_DD_HH_MM_SS, timezone = DateFormatConstants.TIME_ZONE_GMT_PLUS_8)
    private Date lastLoginTime;
    /**
     * 最后登录IP
     */
    private String lastIp;
    /**
     * 累计登录次数
     */
    private Integer loginCount;

    @Data
    public static class DateRange {
        private LocalDateTime beginTime;
        private LocalDateTime endTime;
    }
}
